package main

import (
	"fmt"
	"github.com/sirupsen/logrus"
	"os"
)

type Myhook struct {
}

func (M Myhook) Levels() []logrus.Level {
	return []logrus.Level{logrus.ErrorLevel}
}
func (M Myhook) Fire(entry *logrus.Entry) error {
	//fmt.Println(entry)
	entry.Data["app"] = "wxd" //相等于给每个日志增加字段，但是如果Levels()方法指定了某个级别的日志，则只有这个级别的日志才会有字段
	fmt.Println(entry.Level)  //打印日志级别
	/*
		通过hook实现将err写进err.log中
	*/
	file, _ := os.OpenFile("./err.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
	line, _ := entry.String() //类型转换为string类型
	file.Write([]byte(line))  //采用file.Write方法写进文件中。此时会将err级别的日志写进文件中
	return nil
}

//通过hook实现一个名称写入日志都加一个field
func main() {
	logrus.AddHook(&Myhook{})
	logrus.Warnln("警告")
	logrus.Error("错误")
}
